<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        async function fn1() {
            fn2().then(res => {
                console.log(res, 'res')
            })
            let a = await 123
            console.log(a)
        }
        async function fn2() {
            return new Promise((resolve) => {
                resolve([1, 2, 3])
            })
        }
        console.log(fn1())

        //当一个函数前面加了async之后，那么这个函数就变成了一个异步函数，执行这个函数的时候会返回一个promise实例
        //因此，可以直接.then
        //await的含义为等待，也就是 async 函数需要等待await后的函数执行完成并且有了返回结果（Promise对象）之后，
        //才能继续执行下面的代码。await通过返回一个Promise对象来实现同步的效果
        //说白了，如果await后面如果不是一个promise对象实例，那么直接可以拿到await后面的值
        //如果是一个promise实例，await会拿到这个promise resolve出去来值，可以理解为.then(res)，保存await的那个变量存的就是res

        //await会把await下面的代码变成微任务
    </script>
</body>

</html>